package com.example.tse.rbhttpservice.service.moments;

import com.example.tse.rbhttpservice.service.moments.model.MomentsGetActivityListRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsGetActivityListResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsPraiseRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsPraiseResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsFavoriteRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsFavoriteResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsSubmitRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsSubmitResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsArticleDetailRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsArticleDetailResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsLikeRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsLikeResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsGetListRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsGetListResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsGetRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsGetResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsRemoveRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsRemoveResponse;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsUploadPicRequest;
import com.example.tse.rbhttpservice.service.moments.model.MomentsMomentsUploadPicResponse;
import  com.example.tse.rbhttpservice.service.RemoteServiceListenerT;

/**
 *
 * @author wliu
 *  edit   tse
 */
public interface MomentsService {
	/**
	 * 获取活动列表，用于发表帖子时选择活动，仅需要ID＋名称
	 * @param request
	 * @param listener
	 * @return MomentsGetActivityListResponse
	 */
	  void getActivityList(MomentsGetActivityListRequest request, RemoteServiceListenerT<MomentsGetActivityListResponse> listener);
		
	/**
	 * 帖子可以点赞，点赞不可取消
	 * @param request
	 * @param listener
	 * @return MomentsMomentsPraiseResponse
	 */
	  void praise(MomentsMomentsPraiseRequest request, RemoteServiceListenerT<MomentsMomentsPraiseResponse> listener);
		
	/**
	 * 收藏或取消收藏文章，若传递状态则根据值确定收藏或取消
	 * @param request
	 * @param listener
	 * @return MomentsMomentsFavoriteResponse
	 */
	  void favorite(MomentsMomentsFavoriteRequest request, RemoteServiceListenerT<MomentsMomentsFavoriteResponse> listener);
		
	/**
	 * 发表帖子，帖子内容140字内，可以只上传图片
	 * @param request
	 * @param listener
	 * @return MomentsMomentsSubmitResponse
	 */
	  void submit(MomentsMomentsSubmitRequest request, RemoteServiceListenerT<MomentsMomentsSubmitResponse> listener);
		
	/**
	 * 文章是否点赞，是否收藏 分享内容
	 * @param request
	 * @param listener
	 * @return MomentsMomentsArticleDetailResponse
	 */
	  void articleDetail(MomentsMomentsArticleDetailRequest request, RemoteServiceListenerT<MomentsMomentsArticleDetailResponse> listener);
		
	/**
	 * 帖子可以点赞，点赞不可取消
	 * @param request
	 * @param listener
	 * @return MomentsMomentsLikeResponse
	 */
	  void like(MomentsMomentsLikeRequest request, RemoteServiceListenerT<MomentsMomentsLikeResponse> listener);
		
	/**
	 * 用于首页、我的主页、活动的帖子，我的主页需要传递memberId（为空为当前用户），活动需要传递activityId
	 * @param request
	 * @param listener
	 * @return MomentsMomentsGetListResponse
	 */
	  void getList(MomentsMomentsGetListRequest request, RemoteServiceListenerT<MomentsMomentsGetListResponse> listener);
		
	/**
	 * 获取朋友圈帖子详情，分享（标题［有活动显示活动标题、没有显示固定一句话］＋描述［有帖子内容显示帖子内容、没有显示固定一句话］＋图片＋链接），固定一句话后台维护，每次获取数据返回
	 * @param request
	 * @param listener
	 * @return MomentsMomentsGetResponse
	 */
	  void get(MomentsMomentsGetRequest request, RemoteServiceListenerT<MomentsMomentsGetResponse> listener);
		
	/**
	 * 可以删除用户自己的帖子，同时删除对应的评论
	 * @param request
	 * @param listener
	 * @return MomentsMomentsRemoveResponse
	 */
	  void remove(MomentsMomentsRemoveRequest request, RemoteServiceListenerT<MomentsMomentsRemoveResponse> listener);
		
	/**
	 * 朋友圈上传接口
	 * @param request
	 * @param listener
	 * @return MomentsMomentsUploadPicResponse
	 */
	  void uploadPic(MomentsMomentsUploadPicRequest request, RemoteServiceListenerT<MomentsMomentsUploadPicResponse> listener);
		
}
